推断类型谓词:TypeScript 5.5 现在可以推断出类型谓词,这意味着编译器能够理解过滤数组时的类型排除逻辑。例如,filter(bird => bird !== undefined)
会将 birds
推断为 Bird[]
而不是 (Bird | undefined)[]
。
常量索引访问的控制流细化:当对象和键都是常量时,TypeScript 现在可以细化 obj[key]
的表达式类型。例如,在 typeof obj[key] === "string"
检查之后,obj[key]
可以被细化为 string
类型。
JSDoc @import
标签:引入了新的 JSDoc 标签 @import
,允许开发者在类型检查时导入类型,而不需要在运行时导入它们。这简化了类型导入的语法。
正则表达式语法检查:TypeScript 5.5 开始对正则表达式进行基本的语法检查,能够捕获常见的正则表达式错误,例如错误的括号和不存在的反向引用。
支持 ECMAScript Set 新方法:声明了 ECMAScript Set
类型的新提议方法,如 union
, intersection
, difference
, symmetricDifference
, isSubsetOf
, isSupersetOf
, 和 isDisjointFrom
。
隔离声明:引入了 --isolatedDeclarations
选项,允许开发者明确写出他们导出的类型,工具可以不查看模块实现就能生成声明文件。
配置文件中的 ${configDir}
模板变量:在 tsconfig.json
或 jsconfig.json
文件的某些路径字段中使用 ${configDir}
变量,它会被替换为给定编译中配置文件的包含目录。
为声明文件生成 package.json 依赖:TypeScript 5.5 在生成声明文件时会更宽松地处理 package.json
中明确声明的依赖。
编辑器和监视模式的可靠性改进:改进了 --watch
模式和 TypeScript 编辑器集成的可靠性,减少了 TSServer/编辑器重启的次数。
性能和体积优化:进行了多项性能优化,包括语言服务和公共 API 的单态化对象,控制流图的优化,以及 transpileModule
和 transpileDeclaration
API 的改进。将 TypeScript 打包大小从 5.5 MB 减少到 3.7 MB!
ECMAScript 模块中更容易地使用 API:修复了与 ECMAScript 模块一起使用时 TypeScript npm 包的命名导入问题。
transpileDeclaration API:引入了一个新的 API,用于根据输入源文本生成单个声明文件。